<html>
<head><meta charset="utf-8"><title>Actually writing libmvec · project-portable-simd · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/index.html">project-portable-simd</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html">Actually writing libmvec</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="236095763"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236095763" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236095763">(Apr 25 2021 at 21:39)</a>:</h4>
<p>where should libmvec go?</p>



<a name="236095860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236095860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236095860">(Apr 25 2021 at 21:40)</a>:</h4>
<p>I'm not really sure what we should do, I don't know if we should work with llvm to make our own vector math lib</p>



<a name="236095873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236095873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236095873">(Apr 25 2021 at 21:41)</a>:</h4>
<p>We likely are going to want to provide more vectorized functions than existing libs provide</p>



<a name="236095945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236095945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236095945">(Apr 25 2021 at 21:42)</a>:</h4>
<p>I also don't know what happens if our symbol names conflict with someone actually trying to link against a system vector math lib</p>



<a name="236095982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236095982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236095982">(Apr 25 2021 at 21:43)</a>:</h4>
<p>Just realized this is another topic.</p>



<a name="236096088"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236096088" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236096088">(Apr 25 2021 at 21:45)</a>:</h4>
<p>True lol</p>



<a name="236096094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236096094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236096094">(Apr 25 2021 at 21:46)</a>:</h4>
<p>I'm also not sure what to do about calling convention</p>



<a name="236096198"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236096198" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236096198">(Apr 25 2021 at 21:47)</a>:</h4>
<p>Perhaps we want to sort out the simd C ffi problem entirely first</p>



<a name="236097766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236097766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236097766">(Apr 25 2021 at 22:13)</a>:</h4>
<p>imo, the calling convention thing is sorted by teaching rustc the cursed knowledge of what a vector register really is.</p>



<a name="236097936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236097936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236097936">(Apr 25 2021 at 22:16)</a>:</h4>
<p>Well that's not really the issue, the issue is that SSE and AVX have different calling conventions right?</p>



<a name="236097972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236097972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236097972">(Apr 25 2021 at 22:17)</a>:</h4>
<p>Only kinda, and that's what I mean by "teach rustc the cursed knowledge of what a vector register really is".</p>



<a name="236098027"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098027" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098027">(Apr 25 2021 at 22:18)</a>:</h4>
<p>Also to some extent the whole concept of a vector math lib only applies to x86-64</p>



<a name="236098035"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098035" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098035">(Apr 25 2021 at 22:18)</a>:</h4>
<p>does it?</p>



<a name="236098044"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098044" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098044">(Apr 25 2021 at 22:18)</a>:</h4>
<p>Well if you don't have NEON... You're just calling libm anyway</p>



<a name="236098057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098057">(Apr 25 2021 at 22:19)</a>:</h4>
<p>Well yeah, but on aarch64 you have Neon by definition.</p>



<a name="236098073"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098073" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098073">(Apr 25 2021 at 22:19)</a>:</h4>
<p>So it should never generate libm calls on aarch64 anyway</p>



<a name="236098102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098102">(Apr 25 2021 at 22:20)</a>:</h4>
<p>aarch64 is very "like" x86_64 in that it has a standard 128-bit vector register (Neon or SSE2) which is also the preferred form for floats.<br>
weeeell...</p>



<a name="236098128"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098128" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098128">(Apr 25 2021 at 22:20)</a>:</h4>
<div class="codehilite" data-code-language="GAS"><pre><span></span><code><span class="nl">example:</span><span class="err">:</span><span class="nl">f32x4:</span><span class="err">:</span><span class="nl">powi:</span>
        <span class="nf">sub</span>     <span class="no">sp</span><span class="p">,</span> <span class="no">sp</span><span class="p">,</span> <span class="mi">#64</span>
        <span class="nf">str</span>     <span class="no">x30</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">,</span> <span class="mi">#32</span><span class="p">]</span>
        <span class="nf">stp</span>     <span class="no">x20</span><span class="p">,</span> <span class="no">x19</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">,</span> <span class="mi">#48</span><span class="p">]</span>
        <span class="nf">ldr</span>     <span class="no">q0</span><span class="p">,</span> <span class="p">[</span><span class="no">x0</span><span class="p">]</span>
        <span class="nf">mov</span>     <span class="no">w0</span><span class="p">,</span> <span class="no">w1</span>
        <span class="nf">mov</span>     <span class="no">w19</span><span class="p">,</span> <span class="no">w1</span>
        <span class="nf">mov</span>     <span class="no">x20</span><span class="p">,</span> <span class="no">x8</span>
        <span class="nf">str</span>     <span class="no">q0</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">,</span> <span class="mi">#16</span><span class="p">]</span>
        <span class="nf">mov</span>     <span class="no">s0</span><span class="p">,</span> <span class="no">v0.s</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
        <span class="nf">bl</span>      <span class="no">__powisf2</span>
        <span class="nf">str</span>     <span class="no">d0</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">]</span>
        <span class="nf">ldr</span>     <span class="no">q0</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">,</span> <span class="mi">#16</span><span class="p">]</span>
        <span class="nf">mov</span>     <span class="no">w0</span><span class="p">,</span> <span class="no">w19</span>
        <span class="nf">bl</span>      <span class="no">__powisf2</span>
        <span class="nf">ldr</span>     <span class="no">q1</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">]</span>
        <span class="nf">mov</span>     <span class="no">w0</span><span class="p">,</span> <span class="no">w19</span>
        <span class="nf">mov</span>     <span class="no">v0.s</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="no">v1.s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
        <span class="nf">str</span>     <span class="no">q0</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">]</span>
        <span class="nf">ldr</span>     <span class="no">q0</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">,</span> <span class="mi">#16</span><span class="p">]</span>
        <span class="nf">mov</span>     <span class="no">s0</span><span class="p">,</span> <span class="no">v0.s</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
        <span class="nf">bl</span>      <span class="no">__powisf2</span>
        <span class="nf">ldr</span>     <span class="no">q1</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">]</span>
        <span class="nf">mov</span>     <span class="no">w0</span><span class="p">,</span> <span class="no">w19</span>
        <span class="nf">mov</span>     <span class="no">v1.s</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="no">v0.s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
        <span class="nf">ldr</span>     <span class="no">q0</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">,</span> <span class="mi">#16</span><span class="p">]</span>
        <span class="nf">str</span>     <span class="no">q1</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">]</span>
        <span class="nf">mov</span>     <span class="no">s0</span><span class="p">,</span> <span class="no">v0.s</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
        <span class="nf">bl</span>      <span class="no">__powisf2</span>
        <span class="nf">ldr</span>     <span class="no">q1</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">]</span>
        <span class="nf">ldr</span>     <span class="no">x30</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">,</span> <span class="mi">#32</span><span class="p">]</span>
        <span class="nf">mov</span>     <span class="no">v1.s</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="no">v0.s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
        <span class="nf">str</span>     <span class="no">q1</span><span class="p">,</span> <span class="p">[</span><span class="no">x20</span><span class="p">]</span>
        <span class="nf">ldp</span>     <span class="no">x20</span><span class="p">,</span> <span class="no">x19</span><span class="p">,</span> <span class="p">[</span><span class="no">sp</span><span class="p">,</span> <span class="mi">#48</span><span class="p">]</span>
        <span class="nf">add</span>     <span class="no">sp</span><span class="p">,</span> <span class="no">sp</span><span class="p">,</span> <span class="mi">#64</span>
        <span class="nf">ret</span>
</code></pre></div>



<a name="236098151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098151">(Apr 25 2021 at 22:21)</a>:</h4>
<p>it turns out that is wishful thinking. <span aria-label="sweat smile" class="emoji emoji-1f605" role="img" title="sweat smile">:sweat_smile:</span></p>



<a name="236098207"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098207" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098207">(Apr 25 2021 at 22:21)</a>:</h4>
<p>Well in that case not sure we need libmvec, we just need to implement this without a compiler intrinsic</p>



<a name="236098261"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098261" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098261">(Apr 25 2021 at 22:22)</a>:</h4>
<p>Because NEON simply doesn't have an instruction for that</p>



<a name="236098263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098263">(Apr 25 2021 at 22:22)</a>:</h4>
<p>isn't that kind of the same thing?</p>



<a name="236098270"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098270" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098270">(Apr 25 2021 at 22:22)</a>:</h4>
<p>No, libmvec is for when the architecture sometimes has an instruction</p>



<a name="236098280"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098280" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098280">(Apr 25 2021 at 22:22)</a>:</h4>
<p>I suppose.</p>



<a name="236098285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098285">(Apr 25 2021 at 22:22)</a>:</h4>
<p>Like you have an fma instruction with FMA3 but not base x86-64</p>



<a name="236098304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098304">(Apr 25 2021 at 22:23)</a>:</h4>
<p><em>nod</em></p>



<a name="236098361"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098361" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098361">(Apr 25 2021 at 22:24)</a>:</h4>
<p>Perhaps we should teach LLVM a sequence of LLVM IR to use instead of libm calls, though I'm not sure if that's the right solution either</p>



<a name="236098363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098363">(Apr 25 2021 at 22:24)</a>:</h4>
<p>I guess the thing is that I expect this to crop up on other architectures over time. We're gonna gain new vector instructions.</p>



<a name="236098375"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098375" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098375">(Apr 25 2021 at 22:24)</a>:</h4>
<p>hmm.</p>



<a name="236098378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098378">(Apr 25 2021 at 22:25)</a>:</h4>
<p>Right but are they going to be optional features</p>



<a name="236098388"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098388" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098388">(Apr 25 2021 at 22:25)</a>:</h4>
<p>probably?</p>



<a name="236098405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098405">(Apr 25 2021 at 22:25)</a>:</h4>
<p>like... in the same sense they're "optional" on x86.</p>



<a name="236098421"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098421" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098421">(Apr 25 2021 at 22:25)</a>:</h4>
<p>NEON was optional on arm v7 but other than that optional vector extensions seems to be an Intel thing right now</p>



<a name="236098496"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098496" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098496">(Apr 25 2021 at 22:27)</a>:</h4>
<p>Note that I'm not suggesting we don't support it, just thinking that might give us a hint as to where we special-case things</p>



<a name="236098499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098499">(Apr 25 2021 at 22:27)</a>:</h4>
<p>Oh no, it's going to be an Arm thing soon too.<br>
aarch64 with and without SVE, namely.</p>



<a name="236098569"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098569" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098569">(Apr 25 2021 at 22:28)</a>:</h4>
<p>Right, but I doubt they will break down functionality the way intel has. Like you have vectors but you can't take a square root. That kind of thing</p>



<a name="236098571"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098571" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098571">(Apr 25 2021 at 22:28)</a>:</h4>
<p>Either you'll have them or you won't, probably</p>



<a name="236098583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098583">(Apr 25 2021 at 22:29)</a>:</h4>
<p>And Power has vector instructions dependent on version as well.</p>



<a name="236098586"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098586" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098586">(Apr 25 2021 at 22:29)</a>:</h4>
<p>Hmm</p>



<a name="236098587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098587">(Apr 25 2021 at 22:29)</a>:</h4>
<p>which are explicitly enhancements to the existing 128 bit registers.</p>



<a name="236098602"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098602" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098602">(Apr 25 2021 at 22:29)</a>:</h4>
<p>i.e. basically the same story as SSE2 vs. SSE3 vs. SSE4.1 vs. SSE4.2</p>



<a name="236098657"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098657" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098657">(Apr 25 2021 at 22:30)</a>:</h4>
<p>The differences are more <em>subtle</em> on other architectures, I will grant.</p>



<a name="236098663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098663">(Apr 25 2021 at 22:30)</a>:</h4>
<p>or more stark, in some ways.</p>



<a name="236098692"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098692" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098692">(Apr 25 2021 at 22:30)</a>:</h4>
<p>Intel clearly treats the extensions as patch releases</p>



<a name="236098730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098730">(Apr 25 2021 at 22:31)</a>:</h4>
<p>Yeah, whereas AMD is more likely to apply a feature and then toy with it and then get rid of it(!)</p>



<a name="236098786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098786">(Apr 25 2021 at 22:32)</a>:</h4>
<p>To be fair I think FMA4 was intel's fault for not wanting to add the instructions</p>



<a name="236098791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098791">(Apr 25 2021 at 22:32)</a>:</h4>
<p>But yes</p>



<a name="236098797"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098797" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098797">(Apr 25 2021 at 22:32)</a>:</h4>
<p>I mean yes but they've done it with other things too.</p>



<a name="236098803"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098803" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098803">(Apr 25 2021 at 22:32)</a>:</h4>
<p>which is <em>fine</em> imo.</p>



<a name="236098872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098872">(Apr 25 2021 at 22:33)</a>:</h4>
<p>Anyway perhaps what we want to do is propose something to LLVM that's like compiler-rt, it's not some haphazard insertion of some other vector libms, it's actually a collection of all functions LLVM could possibly generate but without libm</p>



<a name="236098918"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098918" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098918">(Apr 25 2021 at 22:34)</a>:</h4>
<p>hmm.</p>



<a name="236098971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098971">(Apr 25 2021 at 22:35)</a>:</h4>
<p>As it stands LLVM only uses vector math libs for like 3 functions, and we probably have around 10 that will generate libm calls</p>



<a name="236098995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236098995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236098995">(Apr 25 2021 at 22:35)</a>:</h4>
<p>Some of which aren't even provided by the various math libs</p>



<a name="236099008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099008">(Apr 25 2021 at 22:35)</a>:</h4>
<p>right.</p>



<a name="236099010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099010">(Apr 25 2021 at 22:35)</a>:</h4>
<p>It's also probably write-once as long as it's done in generic llvm vectors (even if it's in C/C++)</p>



<a name="236099071"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099071" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099071">(Apr 25 2021 at 22:36)</a>:</h4>
<p><span aria-label="grimacing" class="emoji emoji-1f62c" role="img" title="grimacing">:grimacing:</span></p>



<a name="236099080"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099080" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099080">(Apr 25 2021 at 22:36)</a>:</h4>
<p>Though</p>



<a name="236099088"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099088" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099088">(Apr 25 2021 at 22:36)</a>:</h4>
<p>I am concerned that on many architectures the appropriate thing to do will be to call libm</p>



<a name="236099099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099099">(Apr 25 2021 at 22:37)</a>:</h4>
<p>Like on armv7 without NEON... We should be calling libm</p>



<a name="236099101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099101">(Apr 25 2021 at 22:37)</a>:</h4>
<p>mmm.</p>



<a name="236099199"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099199" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099199">(Apr 25 2021 at 22:38)</a>:</h4>
<p>Well, okay, so are you familiar with the notion of "libcall legalizing"?</p>



<a name="236099226"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099226" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099226">(Apr 25 2021 at 22:40)</a>:</h4>
<p>when to expand an abstract LLVM intrinsic into a libcall is something that LLVM's internal logic handles.</p>



<a name="236099429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099429">(Apr 25 2021 at 22:43)</a>:</h4>
<p>Well not a formal name for it, but yes, it happens somewhere when lowering</p>



<a name="236099486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099486">(Apr 25 2021 at 22:44)</a>:</h4>
<p>Right.<br>
LLVM has a legalization phase, which is where the compiler decides what instructions are <strong>valid</strong> to use.</p>



<a name="236099499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099499">(Apr 25 2021 at 22:45)</a>:</h4>
<p>Right</p>



<a name="236099517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099517">(Apr 25 2021 at 22:45)</a>:</h4>
<p>So, the upshot of that is... LLVM already <em>knows</em> it has to use libm on Armv7 without Neon!<br>
It's fine.</p>



<a name="236099570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Caleb Zulawski <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099570">(Apr 25 2021 at 22:46)</a>:</h4>
<p>Oh yeah of course, I'm just suggesting we don't want to write a vectorized libm for armv7</p>



<a name="236099577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236099577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236099577">(Apr 25 2021 at 22:46)</a>:</h4>
<p>well yes.</p>



<a name="236102422"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/257879-project-portable-simd/topic/Actually%20writing%20libmvec/near/236102422" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jacob Lifshay <a href="https://rust-lang.github.io/zulip_archive/stream/257879-project-portable-simd/topic/Actually.20writing.20libmvec.html#236102422">(Apr 25 2021 at 23:37)</a>:</h4>
<p>closely related <a href="https://github.com/rust-lang/stdsimd/issues/109">https://github.com/rust-lang/stdsimd/issues/109</a> funding potentially available for writing a libmvec</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>